//
// Created by Administrator on 2022/10/4 0004.
//
#include <onix/onix.h>
#include <onix/interrupt.h>
#include <onix/memory.h>
#include <onix/clock.h>
#include <onix/task.h>
#include <onix/global.h>
#include <onix/arena.h>
#include <onix/ide.h>
#include <onix/buffer.h>
#include <onix/fs.h>

#pragma ide diagnostic ignored "EndlessLoop"
// 阻塞
void hang()
{
    while (TRUE) ;
}

// 延迟
void delay(u32 count)
{
    while (count--) ;
}

void kernel_init()
{
    tss_init();
    // 初始化内存映射
    memory_map_init();
    mapping_init();
    arena_init();
    // 初始化中断
    interrupt_init();
    // 初始化时间
//    time_init();
    // 初始化时钟
    clock_init();
    // 初始化键盘
    keyboard_init();
    // 初始化硬盘
    ide_init();
    // 初始化缓冲区
    buffer_init();
    // 初始化任务
    task_init();
    // 初始化实时时钟
//    rtc_init();
    // 测试内存分配
//    memory_test();
    // 测试位图
//    bitmap_tests();
    // 系统调用初始化
    syscall_init();
    // 测试链表
//    list_test();
    // 初始化文件系统
    super_init();
    // 打开中断
    set_interrupt_state(TRUE);
}